From f62fc4e2f2b793f95750cc02a21f6af5793e339b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 29 Jun 2019 05:06:56 +0000 Subject: [PATCH] constraint layout: freeze/thaw on mass ops In measure and allocate we are potentially changing quite a few constraints. Don't optimize at every step. --- gtk/gtkconstraintlayout.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkconstraintlayout.c b/gtk/gtkconstraintlayout.c index aa5280d8fd..a746491ccb 100644 --- a/gtk/gtkconstraintlayout.c +++ b/gtk/gtkconstraintlayout.c @@ -710,6 +710,7 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager, return; size_constraints = g_ptr_array_new (); + gtk_constraint_solver_freeze (solver); /* We measure each child in the layout and impose restrictions on the * minimum and natural size, so we can solve the size of the overall @@ -763,6 +764,8 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager, g_ptr_array_add (size_constraints, constraint); } + gtk_constraint_solver_thaw (solver); + switch (orientation) { case GTK_ORIENTATION_HORIZONTAL: @@ -879,6 +882,7 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager, gtk_constraint_variable_get_value (layout_height))); size_constraints = g_ptr_array_new (); + gtk_constraint_solver_freeze (solver); /* We reset the constraints on the size of each child, so we are sure the * layout is up to date @@ -931,6 +935,8 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager, g_ptr_array_add (size_constraints, constraint); } + gtk_constraint_solver_thaw (solver); + for (child = _gtk_widget_get_first_child (widget); child != NULL; child = _gtk_widget_get_next_sibling (child)) -- 2.30.2